#include<iostream>
#include<stack>
using namespace std;


/* 
    栈是一种遵循后进先出（LIFO）原则的线性数据结构。
    C++ 标准模板库（STL）提供了 stack 容器适配器，用于实现栈的数据结构。
    stack 的基本操作：
    push(x)：在栈顶添加元素 x。
    pop()：删除栈顶元素。
    top()：访问栈顶元素。
    size()：返回栈中元素的个数。
    empty()：判断栈是否为空。

*/


int main() {
    stack<int> s; // 初始化一个空栈

    cout << "Size of s: " << s.size() << endl;

    cout << "s is: empty " << (s.empty() ? "true" : "false") << endl;

    s.push(10); // 在栈顶添加元素 10
    cout << "After push(10), size of s: " << s.size() << endl;
    s.push(20); // 在栈顶添加元素 20
    cout << "After push(20), size of s: " << s.size() << endl;

    cout << "Top element: " << s.top() << endl; // 访问栈顶元素

    s.pop(); // 删除栈顶元素
    cout << "After pop(), size of s: " << s.size() << endl;

    cout << "Top element: " << s.top() << endl; // 访问栈顶元素 
    return 0;
}